package com.petmarket.contract;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.fisco.bcos.sdk.v3.client.Client;
import org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray;
import org.fisco.bcos.sdk.v3.codec.datatypes.Event;
import org.fisco.bcos.sdk.v3.codec.datatypes.Function;
import org.fisco.bcos.sdk.v3.codec.datatypes.Type;
import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference;
import org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int256;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int32;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint8;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple1;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple2;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple4;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple5;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple6;
import org.fisco.bcos.sdk.v3.contract.Contract;
import org.fisco.bcos.sdk.v3.crypto.CryptoSuite;
import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair;
import org.fisco.bcos.sdk.v3.eventsub.EventSubCallback;
import org.fisco.bcos.sdk.v3.model.CryptoType;
import org.fisco.bcos.sdk.v3.model.TransactionReceipt;
import org.fisco.bcos.sdk.v3.model.callback.TransactionCallback;
import org.fisco.bcos.sdk.v3.transaction.manager.transactionv1.ProxySignTransactionManager;
import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException;

@SuppressWarnings("unchecked")
public class LoginContract extends Contract {
    public static final String[] BINARY_ARRAY = {"60806040523480156200001157600080fd5b5060408051600580825260c08201909252600091816020015b60608152602001906001900390816200002a579050509050604051806040016040528060078152602001661858d8dbdd5b9d60ca1b8152508160008151811062000078576200007862000361565b6020026020010181905250604051806040016040528060088152602001671c185cdcdddbdc9960c21b81525081600181518110620000ba57620000ba62000361565b602002602001018190525060405180604001604052806009815260200168757365725f7479706560b81b81525081600281518110620000fd57620000fd62000361565b60200260200101819052506040518060400160405280600a8152602001691a5cd7d9195b195d195960b21b8152508160038151811062000141576200014162000361565b60200260200101819052506040518060400160405280600a815260200169707269766174654b657960b01b8152508160048151811062000185576200018562000361565b602002602001018190525060006040518060600160405280600180811115620001b257620001b262000377565b8152602001604051806040016040528060028152602001611a5960f21b81525081526020018381525090506110026001600160a01b03166375b14eea604051806040016040528060098152602001686c645f7461626c653360b81b815250836040518363ffffffff1660e01b815260040162000230929190620003dd565b6020604051808303816000875af115801562000250573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002769190620004a5565b5060408051808201825260098152686c645f7461626c653360b81b6020820152905163f23f63c960e01b81526000916110029163f23f63c991620002bd91600401620004d1565b602060405180830381865afa158015620002db573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003019190620004e6565b90506001600160a01b038116620003385760405162461bcd60e51b8152602060048201526000602482015260440160405180910390fd5b600080546001600160a01b0319166001600160a01b039290921691909117905550620005119050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b81811015620003b55760208185018101518683018201520162000397565b81811115620003c8576000602083870101525b50601f01601f19169290920160200192915050565b604081526000620003f260408301856200038d565b6020838203818501528451600281106200041c57634e487b7160e01b600052602160045260246000fd5b80835250808501516060828401526200043960608401826200038d565b90506040860151838203604085015281935080518083528383019450838160051b840101848301925060005b828110156200049757601f19858303018752620004848285516200038d565b9686019693860193915060010162000465565b509998505050505050505050565b600060208284031215620004b857600080fd5b81518060030b8114620004ca57600080fd5b9392505050565b602081526000620004ca60208301846200038d565b600060208284031215620004f957600080fd5b81516001600160a01b0381168114620004ca57600080fd5b61275b80620005216000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806397033a171161007157806397033a1714610155578063b2beeb9014610168578063b7c288361461017b578063db5c2fab1461019f578063eb18b487146101b2578063f575cda0146101c557600080fd5b8063428ffbbb146100ae57806355f150f1146100d7578063725dbc40146100ed5780638cc77e7e1461010e578063950579e81461012f575b600080fd5b6100c16100bc366004611adc565b6101ed565b6040516100ce9190611bc3565b60405180910390f35b6100df610510565b6040516100ce929190611bdd565b6101006100fb366004611ced565b6105b3565b6040516100ce929190611d50565b61012161011c366004611d98565b61091b565b6040519081526020016100ce565b61014261013d366004611ea6565b610a31565b60405160039190910b81526020016100ce565b610142610163366004611f3e565b610c8b565b610142610176366004611adc565b610ea3565b61018e61018936600461201e565b6110fe565b6040516100ce959493929190612039565b6101426101ad366004611adc565b6112bc565b6101426101c036600461201e565b6115ce565b6101d86101d3366004611adc565b611882565b60405163ffffffff90911681526020016100ce565b60408051808201825260008082526101f46020830152825160028082526060828101909552816020015b61023c6040805160608101909152806000815260200160608152602001606081525090565b8152602001906001900390816102175790505060408051606081018252600081528151808301835260028152611a5960f21b602080830191909152820152815163ecb6fef360e01b8152600789900b6004820152929350919082019061100f9063ecb6fef390602401600060405180830381865afa1580156102c2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102ea9190810190612101565b8152508160008151811061030057610300612135565b60209081029190910101526040805160608101909152806003815260408051808201825260028152611a5960f21b602080830191909152830152805163ecb6fef360e01b8152600788900b600482015291019061100f9063ecb6fef390602401600060405180830381865afa15801561037d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103a59190810190612101565b815250816001815181106103bb576103bb612135565b602090810291909101015260008054604051632a92244160e01b81526001600160a01b0390911690632a922441906103f990859087906004016121e2565b600060405180830381865afa158015610416573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261043e919081019061231f565b9050600081516001600160401b0381111561045b5761045b611c02565b60405190808252806020026020018201604052801561048e57816020015b60608152602001906001900390816104795790505b50905060005b8151811015610505578281815181106104af576104af612135565b6020026020010151602001516000815181106104cd576104cd612135565b60200260200101518282815181106104e7576104e7612135565b602002602001018190525080806104fd906123cf565b915050610494565b509695505050505050565b60408051808201825260098152686c645f7461626c653360b81b6020820152905163b8764d3f60e01b815260609182916000916110029163b8764d3f91610559916004016123f8565b600060405180830381865afa158015610576573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261059e919081019061240b565b90508060200151816040015192509250509091565b6040805160018082528183019092526060918291600091816020015b6105f46040805160608101909152806000815260200160608152602001606081525090565b8152602001906001900390816105cf57905050604080518082018252600080825260646020830152825160608101909352929350918190815260408051808201825260028152611a5960f21b602080830191909152830152805163ecb6fef360e01b81526000600482015291019061100f9063ecb6fef390602401600060405180830381865afa15801561068c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106b49190810190612101565b815250826000815181106106ca576106ca612135565b602090810291909101015260008054604051632a92244160e01b81526001600160a01b0390911690632a9224419061070890869086906004016121e2565b600060405180830381865afa158015610725573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261074d919081019061231f565b6040805180820182526001808252600360fc1b602080840182905284518086019095529184529083015291925060005b835181101561090c578960405160200161079791906124b2565b604051602081830303815290604052805190602001208482815181106107bf576107bf612135565b6020026020010151602001516000815181106107dd576107dd612135565b60200260200101516040516020016107f591906124b2565b6040516020818303038152906040528051906020012014801561089a57508860405160200161082491906124b2565b6040516020818303038152906040528051906020012084828151811061084c5761084c612135565b60200260200101516020015160018151811061086a5761086a612135565b602002602001015160405160200161088291906124b2565b60405160208183030381529060405280519060200120145b156108fa578381815181106108b1576108b1612135565b6020026020010151602001516002815181106108cf576108cf612135565b602002602001015192508381815181106108eb576108eb612135565b60200260200101516000015191505b80610904816123cf565b91505061077d565b50909890975095505050505050565b600060ff8416158061093057508360ff166001145b61093957600080fd5b60008460ff166001141561094b575060015b6000604051806060016040528083600181111561096a5761096a6120a6565b815260208101879052604090810186905251633ad8a77560e11b8152909150600090611002906375b14eea906109a6908b908690600401612516565b6020604051808303816000875af11580156109c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e99190612584565b604051600382900b81529091507fb5636cd912a73dcdb5b570dbe331dfa3e6435c93e029e642def2c8e40dacf2109060200160405180910390a160030b979650505050505050565b60408051600380825260808201909252600091829190816020015b6040805180820190915260608082526020820152815260200190600190039081610a4c575050604080516080810182526007918101918252661858d8dbdd5b9d60ca1b6060820152908152602081018790528151919250908290600090610ab557610ab5612135565b6020026020010181905250604051806040016040528060405180604001604052806008815260200167","1c185cdcdddbdc9960c21b81525081526020018581525081600181518110610b0857610b08612135565b6020026020010181905250604051806040016040528060405180604001604052806009815260200168757365725f7479706560b81b81525081526020018481525081600281518110610b5c57610b5c612135565b60209081029190910101526000805460405163ecb6fef360e01b8152600789900b60048201526001600160a01b03909116906341ffd75f9061100f9063ecb6fef390602401600060405180830381865afa158015610bbe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610be69190810190612101565b846040518363ffffffff1660e01b8152600401610c04929190612615565b6020604051808303816000875af1158015610c23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c479190612584565b604051600382900b81529091507f8e5890af40fc24a059396aca2f83d6ce41fcef086876548fa4fb8ec27e9d292a9060200160405180910390a19695505050505050565b604080518082019182905263ecb6fef360e01b909152600787900b604482015260009081908061100f63ecb6fef360648301600060405180830381865afa158015610cda573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d029190810190612101565b815260408051600580825260c0820190925260209092019190816020015b6060815260200190600190039081610d20579050508152509050868160200151600081518110610d5257610d52612135565b6020026020010181905250858160200151600181518110610d7557610d75612135565b6020026020010181905250848160200151600281518110610d9857610d98612135565b6020026020010181905250838160200151600381518110610dbb57610dbb612135565b6020026020010181905250828160200151600481518110610dde57610dde612135565b602090810291909101015260008054604051635c6e105f60e01b81526001600160a01b0390911690635c6e105f90610e1a90859060040161263a565b6020604051808303816000875af1158015610e39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5d9190612584565b604051600382900b81529091507fc57b01fa77f41df77eaab79a0e2623fab2e7ae3e9530d9b1cab225ad65f2b7ce9060200160405180910390a198975050505050505050565b60408051808201825260008082526101f4602083015282516002808252606082019094529092839190816020015b610ef66040805160608101909152806000815260200160608152602001606081525090565b815260200190600190039081610ed15790505060408051606081018252600081528151808301835260028152611a5960f21b602080830191909152820152815163ecb6fef360e01b8152600789900b6004820152929350919082019061100f9063ecb6fef390602401600060405180830381865afa158015610f7c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fa49190810190612101565b81525081600081518110610fba57610fba612135565b60209081029190910101526040805160608101909152806003815260408051808201825260028152611a5960f21b602080830191909152830152805163ecb6fef360e01b8152600788900b600482015291019061100f9063ecb6fef390602401600060405180830381865afa158015611037573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261105f9190810190612101565b8152508160018151811061107557611075612135565b602090810291909101015260005460405163a726071760e01b81526001600160a01b039091169063a7260717906110b290849086906004016121e2565b6020604051808303816000875af11580156110d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f59190612584565b95945050505050565b6000805460405163ecb6fef360e01b8152600784900b6004820152606092839283928392839290916001600160a01b039091169063fcd7e3c19061100f9063ecb6fef390602401600060405180830381865afa158015611162573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261118a9190810190612101565b6040518263ffffffff1660e01b81526004016111a691906123f8565b600060405180830381865afa1580156111c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111eb9190810190612673565b90506060806060806060856020015151600514156112a957856020015160008151811061121a5761121a612135565b60200260200101519450856020015160018151811061123b5761123b612135565b60200260200101519350856020015160028151811061125c5761125c612135565b60200260200101519250856020015160038151811061127d5761127d612135565b60200260200101519150856020015160048151811061129e5761129e612135565b602002602001015190505b939b929a50909850965090945092505050565b604080516001808252818301909252600091829190816020015b60408051808201909152606080825260208201528152602001906001900390816112d657905050905060405180604001604052806040518060400160405280600681526020016573746174757360d01b8152508152602001604051806040016040528060078152602001661d5c19185d195960ca1b8152508152508160008151811061136457611364612135565b60209081029190910181019190915260408051808201825260008082526101f4828501528251600280825260608201909452919390929082015b6113c36040805160608101909152806000815260200160608152602001606081525090565b81526020019060019003908161139e5790505060408051606081018252600081528151808301835260028152611a5960f21b602080830191909152820152815163ecb6fef360e01b815260078a900b6004820152929350919082019061100f9063ecb6fef390602401600060405180830381865afa158015611449573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114719190810190612101565b8152508160008151811061148757611487612135565b60209081029190910101526040805160608101909152806003815260408051808201825260028152611a5960f21b602080830191909152830152805163ecb6fef360e01b8152600789900b600482015291019061100f9063ecb6fef390602401600060405180830381865afa158015611504573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261152c9190810190612101565b8152508160018151811061154257611542612135565b6020908102919091010152600054604051634c9260bf60e11b81526001600160a01b0390911690639924c17e90611581908490869088906004016126a7565b6020604051808303816000875af11580156115a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c49190612584565b9695505050505050565b6000805460405163ecb6fef360e01b8152600784900b600482015282916001600160a01b03169063fcd7e3c19061100f9063ecb6fef390602401600060405180830381865afa158015611625573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261164d9190810190612101565b6040518263ffffffff1660e01b815260040161166991906123f8565b600060405180830381865afa158015611686573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116ae9190810190612673565b60408051600180825281830190925291925060009190816020015b60408051808201909152606080825260208201528152602001906001900390816116c957905050905060405180604001604052806040518060400160405280600a8152602001691a5cd7d9195b195d195960b21b8152508152602001604051806040016040528060018152602001603160f81b8152508152508160008151811061175557611755612135565b60209081029190910101526000805460405163ecb6fef360e01b8152600787900b60048201526001600160a01b03909116906341ffd75f9061100f9063ecb6fef390602401600060405180830381865afa1580156117b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117df9190810190612101565b846040518363ffffffff1660e01b81526004016117fd929190612615565b6020604051808303816000875af115801561181c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118409190612584565b604051600382900b81529091507f4b930e280fe29620bdff00c88155d46d6d82a39f45dd5c3ea114dc31573581129060200160405180910390a1949350505050565b60408051600280825260608201909252600091829190816020015b6118c26040805160608101909152806000815260200160608152602001606081525090565b81526020019060019003908161189d5790505060408051606081018252600081528151808301835260028152611a5960f21b602080830191909152820152815163ecb6fef360e01b8152600788900b6004820152929350919082019061100f9063ecb6fef390602401600060405180830381865afa158015611948573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119709190810190612101565b8152508160008151811061198657611986612135565b60209081029190910101526040805160608101909152806003815260408051808201825260028152611a5960f21b602080830191909152830152805163ecb6fef360e01b8152600787900b600482015291019061100f9063ecb6fef390602401600060405180830381865afa158015611a03573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a2b9190810190612101565b81525081600181518110611a4157611a41612135565b602090810291909101015260005460405163da46335f60e01b81526001600160a01b039091169063da46335f90611a7c9084906004016126ec565b602060405180830381865afa158015611a99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abd91906126ff565b949350505050565b8035600781900b8114611ad757600080fd5b919050565b6000","8060408385031215611aef57600080fd5b611af883611ac5565b9150611b0660208401611ac5565b90509250929050565b60005b83811015611b2a578181015183820152602001611b12565b83811115611b39576000848401525b50505050565b60008151808452611b57816020860160208601611b0f565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015611bb657601f19868403018952611ba4838351611b3f565b98840198925090830190600101611b88565b5090979650505050505050565b602081526000611bd66020830184611b6b565b9392505050565b604081526000611bf06040830185611b3f565b82810360208401526110f58185611b6b565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715611c3a57611c3a611c02565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611c6857611c68611c02565b604052919050565b60006001600160401b03821115611c8957611c89611c02565b50601f01601f191660200190565b600082601f830112611ca857600080fd5b8135611cbb611cb682611c70565b611c40565b818152846020838601011115611cd057600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215611d0057600080fd5b82356001600160401b0380821115611d1757600080fd5b611d2386838701611c97565b93506020850135915080821115611d3957600080fd5b50611d4685828601611c97565b9150509250929050565b604081526000611d636040830185611b3f565b82810360208401526110f58185611b3f565b60006001600160401b03821115611d8e57611d8e611c02565b5060051b60200190565b60008060008060808587031215611dae57600080fd5b84356001600160401b0380821115611dc557600080fd5b611dd188838901611c97565b9550602091508187013560ff81168114611dea57600080fd5b9450604087013581811115611dfe57600080fd5b611e0a89828a01611c97565b945050606087013581811115611e1f57600080fd5b8701601f81018913611e3057600080fd5b8035611e3e611cb682611d75565b81815260059190911b8201840190848101908b831115611e5d57600080fd5b8584015b83811015611e9557803586811115611e795760008081fd5b611e878e8983890101611c97565b845250918601918601611e61565b50989b979a50959850505050505050565b60008060008060808587031215611ebc57600080fd5b611ec585611ac5565b935060208501356001600160401b0380821115611ee157600080fd5b611eed88838901611c97565b94506040870135915080821115611f0357600080fd5b611f0f88838901611c97565b93506060870135915080821115611f2557600080fd5b50611f3287828801611c97565b91505092959194509250565b60008060008060008060c08789031215611f5757600080fd5b611f6087611ac5565b955060208701356001600160401b0380821115611f7c57600080fd5b611f888a838b01611c97565b96506040890135915080821115611f9e57600080fd5b611faa8a838b01611c97565b95506060890135915080821115611fc057600080fd5b611fcc8a838b01611c97565b94506080890135915080821115611fe257600080fd5b611fee8a838b01611c97565b935060a089013591508082111561200457600080fd5b5061201189828a01611c97565b9150509295509295509295565b60006020828403121561203057600080fd5b611bd682611ac5565b60a08152600061204c60a0830188611b3f565b828103602084015261205e8188611b3f565b905082810360408401526120728187611b3f565b905082810360608401526120868186611b3f565b9050828103608084015261209a8185611b3f565b98975050505050505050565b634e487b7160e01b600052602160045260246000fd5b600082601f8301126120cd57600080fd5b81516120db611cb682611c70565b8181528460208386010111156120f057600080fd5b611abd826020830160208701611b0f565b60006020828403121561211357600080fd5b81516001600160401b0381111561212957600080fd5b611abd848285016120bc565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501808196508360051b8101915082860160005b858110156121d55782840389528151606081516009811061218c5761218c6120a6565b8652818701518787018290526121a482880182611b3f565b915050604080830151925086820381880152506121c18183611b3f565b9a87019a9550505090840190600101612169565b5091979650505050505050565b6060815260006121f5606083018561214b565b9050611bd66020830184805163ffffffff908116835260209182015116910152565b600082601f83011261222857600080fd5b81516020612238611cb683611d75565b82815260059290921b8401810191818101908684111561225757600080fd5b8286015b848110156105055780516001600160401b0381111561227a5760008081fd5b6122888986838b01016120bc565b84525091830191830161225b565b6000604082840312156122a857600080fd5b604051604081016001600160401b0382821081831117156122cb576122cb611c02565b8160405282935084519150808211156122e357600080fd5b6122ef868387016120bc565b8352602085015191508082111561230557600080fd5b5061231285828601612217565b6020830152505092915050565b6000602080838503121561233257600080fd5b82516001600160401b038082111561234957600080fd5b818501915085601f83011261235d57600080fd5b815161236b611cb682611d75565b81815260059190911b8301840190848101908883111561238a57600080fd5b8585015b838110156123c2578051858111156123a65760008081fd5b6123b48b89838a0101612296565b84525091860191860161238e565b5098975050505050505050565b60006000198214156123f157634e487b7160e01b600052601160045260246000fd5b5060010190565b602081526000611bd66020830184611b3f565b60006020828403121561241d57600080fd5b81516001600160401b038082111561243457600080fd5b908301906060828603121561244857600080fd5b612450611c18565b82516002811061245f57600080fd5b815260208301518281111561247357600080fd5b61247f878286016120bc565b60208301525060408301518281111561249757600080fd5b6124a387828601612217565b60408301525095945050505050565b600082516124c4818460208701611b0f565b9190910192915050565b600081518084526020808501808196508360051b8101915082860160005b858110156121d5578284038952612504848351611b3f565b988501989350908401906001016124ec565b6040815260006125296040830185611b3f565b8281036020840152835160028110612543576125436120a6565b808252506020840151606060208301526125606060830182611b3f565b90506040850151828203604084015261257982826124ce565b979650505050505050565b60006020828403121561259657600080fd5b81518060030b8114611bd657600080fd5b600081518084526020808501808196508360051b8101915082860160005b858110156121d55782840389528151604081518187526125e782880182611b3f565b915050868201519150858103878701526126018183611b3f565b9a87019a95505050908401906001016125c5565b6040815260006126286040830185611b3f565b82810360208401526110f581856125a7565b6020815260008251604060208401526126566060840182611b3f565b90506020840151601f198483030160408501526110f582826124ce565b60006020828403121561268557600080fd5b81516001600160401b0381111561269b57600080fd5b611abd84828501612296565b6080815260006126ba608083018661214b565b6126da6020840186805163ffffffff908116835260209182015116910152565b82810360608401526115c481856125a7565b602081526000611bd6602083018461214b565b60006020828403121561271157600080fd5b815163ffffffff81168114611bd657600080fdfea26469706673582212206bac7a7e7c58cc442cbdb0a3625a6bc17c7726063bf1f528ae8a4f7dc6ffb20564736f6c634300080b0033"};

    public static final String BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", BINARY_ARRAY);

    public static final String[] SM_BINARY_ARRAY = {"60806040523480156200001157600080fd5b5060408051600580825260c08201909252600091816020015b60608152602001906001900390816200002a579050509050604051806040016040528060078152602001661858d8dbdd5b9d60ca1b8152508160008151811062000078576200007862000362565b6020026020010181905250604051806040016040528060088152602001671c185cdcdddbdc9960c21b81525081600181518110620000ba57620000ba62000362565b602002602001018190525060405180604001604052806009815260200168757365725f7479706560b81b81525081600281518110620000fd57620000fd62000362565b60200260200101819052506040518060400160405280600a8152602001691a5cd7d9195b195d195960b21b8152508160038151811062000141576200014162000362565b60200260200101819052506040518060400160405280600a815260200169707269766174654b657960b01b8152508160048151811062000185576200018562000362565b602002602001018190525060006040518060600160405280600180811115620001b257620001b262000378565b8152602001604051806040016040528060028152602001611a5960f21b81525081526020018381525090506110026001600160a01b031663f6d7201d604051806040016040528060098152602001686c645f7461626c653360b81b815250836040518363ffffffff1660e01b815260040162000230929190620003de565b6020604051808303816000875af115801562000250573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002769190620004a6565b5060408051808201825260098152686c645f7461626c653360b81b602082015290516359a48b6560e01b8152600091611002916359a48b6591620002bd91600401620004d2565b602060405180830381865afa158015620002db573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003019190620004e7565b90506001600160a01b0381166200033957604051636381e58960e11b8152602060048201526000602482015260440160405180910390fd5b600080546001600160a01b0319166001600160a01b039290921691909117905550620005129050565b63b95aa35560e01b600052603260045260246000fd5b63b95aa35560e01b600052602160045260246000fd5b6000815180845260005b81811015620003b65760208185018101518683018201520162000398565b81811115620003c9576000602083870101525b50601f01601f19169290920160200192915050565b604081526000620003f360408301856200038e565b6020838203818501528451600281106200041d5763b95aa35560e01b600052602160045260246000fd5b80835250808501516060828401526200043a60608401826200038e565b90506040860151838203604085015281935080518083528383019450838160051b840101848301925060005b828110156200049857601f19858303018752620004858285516200038e565b9686019693860193915060010162000466565b509998505050505050505050565b600060208284031215620004b957600080fd5b81518060030b8114620004cb57600080fd5b9392505050565b602081526000620004cb60208301846200038e565b600060208284031215620004fa57600080fd5b81516001600160a01b0381168114620004cb57600080fd5b61275780620005226000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063753582a411610071578063753582a41461016357806382083cca146101795780638af4602c1461018c578063909fb8bd146101b0578063d5c698f3146101c3578063da960265146101d657600080fd5b80630575a21d146100ae5780632682a07c146100d457806332694ee9146100fc57806334e5f909146101225780636a951eb114610142575b600080fd5b6100c16100bc366004611bcf565b6101e9565b6040519081526020015b60405180910390f35b6100e76100e2366004611cf4565b6102ff565b60405163ffffffff90911681526020016100cb565b61010f61010a366004611d27565b610542565b60405160039190910b81526020016100cb565b610135610130366004611cf4565b61079c565b6040516100cb9190611e73565b610155610150366004611e8d565b610abf565b6040516100cb929190611ef0565b61016b610e27565b6040516100cb929190611f15565b61010f610187366004611cf4565b610eca565b61019f61019a366004611f3a565b611125565b6040516100cb959493929190611f55565b61010f6101be366004611f3a565b6112e3565b61010f6101d1366004611cf4565b611597565b61010f6101e4366004611fc2565b6118a9565b600060ff841615806101fe57508360ff166001145b61020757600080fd5b60008460ff1660011415610219575060015b60006040518060600160405280836001811115610238576102386120a2565b81526020810187905260409081018690525163f6d7201d60e01b81529091506000906110029063f6d7201d90610274908b90869060040161210d565b6020604051808303816000875af1158015610293573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b7919061217b565b604051600382900b81529091507f38411b2ef21b6826a8b9f48a1baa6b3388c3354ebdc5db749b35830ec581722d9060200160405180910390a160030b979650505050505050565b60408051600280825260608201909252600091829190816020015b61033f6040805160608101909152806000815260200160608152602001606081525090565b81526020019060019003908161031a5790505060408051606081018252600081528151808301835260028152611a5960f21b60208083019190915282015281516361cd959d60e11b8152600788900b6004820152929350919082019061100f9063c39b2b3a90602401600060405180830381865afa1580156103c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103ed91908101906121e3565b8152508160008151811061040357610403612217565b60209081029190910101526040805160608101909152806003815260408051808201825260028152611a5960f21b60208083019190915283015280516361cd959d60e11b8152600787900b600482015291019061100f9063c39b2b3a90602401600060405180830381865afa158015610480573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104a891908101906121e3565b815250816001815181106104be576104be612217565b6020908102919091010152600054604051633a081ed360e11b81526001600160a01b03909116906374103da6906104f99084906004016122b7565b602060405180830381865afa158015610516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053a91906122ca565b949350505050565b60408051600380825260808201909252600091829190816020015b604080518082019091526060808252602082015281526020019060019003908161055d575050604080516080810182526007918101918252661858d8dbdd5b9d60ca1b60608201529081526020810187905281519192509082906000906105c6576105c6612217565b60200260200101819052506040518060400160405280604051806040016040528060088152602001671c185cdcdddbdc9960c21b8152508152602001858152508160018151811061061957610619612217565b6020026020010181905250604051806040016040528060405180604001604052806009815260200168757365725f7479706560b81b8152508152602001848152508160028151811061066d5761066d612217565b6020908102919091010152600080546040516361cd959d60e11b8152600789900b60048201526001600160a01b03909116906301fa804c9061100f9063c39b2b3a90602401600060405180830381865afa1580156106cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106f791908101906121e3565b846040518363ffffffff1660e01b815260040161071592919061235e565b6020604051808303816000875af1158015610734573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610758919061217b565b604051600382900b81529091507fd72ab475a08df05fbd4f7f8cb4db1ad9dbdc26f54437fa6794acd97357779d2a9060200160405180910390a19695505050505050565b60408051808201825260008082526101f46020830152825160028082526060828101909552816020015b6107eb6040805160608101909152806000815260200160608152602001606081525090565b8152602001906001900390816107c65790505060408051606081018252600081528151808301835260028152611a5960f21b60208083019190915282015281516361cd959d60e11b8152600789900b6004820152929350919082019061100f9063c39b2b3a90602401600060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261089991908101906121e3565b815250816000815181106108af576108af612217565b60209081029190910101526040805160608101909152806003815260408051808201825260028152611a5960f21b60208083019190915283015280516361cd959d60e11b8152600788900b600482015291019061100f9063c39b2b3a90602401600060405180830381865afa15801561092c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261095491908101906121e3565b8152508160018151811061096a5761096a612217565b60209081029190910101526000805460405163087c36d360e01b81526001600160a01b039091169063087c36d3906109a89085908790600401612383565b600060405180830381865afa1580156109c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109ed91908101906124c0565b9050600081516001600160401b03811115610a0a57610a0a611ac1565b604051908082528060200260200182016040528015610a3d57816020015b6060815260200190600190039081610a285790505b50905060005b8151811015610ab457828181518110610a5e57610a5e612217565b602002602001015160200151600081518110610a7c57610a7c612217565b6020026020010151828281518110610a9657610a96612217565b60200260200101819052508080610aac90612570565b915050610a43565b509695505050505050565b6040805160018082528183019092526060918291600091816020015b610b","006040805160608101909152806000815260200160608152602001606081525090565b815260200190600190039081610adb57905050604080518082018252600080825260646020830152825160608101909352929350918190815260408051808201825260028152611a5960f21b60208083019190915283015280516361cd959d60e11b81526000600482015291019061100f9063c39b2b3a90602401600060405180830381865afa158015610b98573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bc091908101906121e3565b81525082600081518110610bd657610bd6612217565b60209081029190910101526000805460405163087c36d360e01b81526001600160a01b039091169063087c36d390610c149086908690600401612383565b600060405180830381865afa158015610c31573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c5991908101906124c0565b6040805180820182526001808252600360fc1b602080840182905284518086019095529184529083015291925060005b8351811015610e185789604051602001610ca39190612599565b60405160208183030381529060405280519060200120848281518110610ccb57610ccb612217565b602002602001015160200151600081518110610ce957610ce9612217565b6020026020010151604051602001610d019190612599565b60405160208183030381529060405280519060200120148015610da6575088604051602001610d309190612599565b60405160208183030381529060405280519060200120848281518110610d5857610d58612217565b602002602001015160200151600181518110610d7657610d76612217565b6020026020010151604051602001610d8e9190612599565b60405160208183030381529060405280519060200120145b15610e0657838181518110610dbd57610dbd612217565b602002602001015160200151600281518110610ddb57610ddb612217565b60200260200101519250838181518110610df757610df7612217565b60200260200101516000015191505b80610e1081612570565b915050610c89565b50909890975095505050505050565b60408051808201825260098152686c645f7461626c653360b81b602082015290516361bb9b7160e11b815260609182916000916110029163c37736e291610e70916004016125b5565b600060405180830381865afa158015610e8d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610eb591908101906125c8565b90508060200151816040015192509250509091565b60408051808201825260008082526101f4602083015282516002808252606082019094529092839190816020015b610f1d6040805160608101909152806000815260200160608152602001606081525090565b815260200190600190039081610ef85790505060408051606081018252600081528151808301835260028152611a5960f21b60208083019190915282015281516361cd959d60e11b8152600789900b6004820152929350919082019061100f9063c39b2b3a90602401600060405180830381865afa158015610fa3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fcb91908101906121e3565b81525081600081518110610fe157610fe1612217565b60209081029190910101526040805160608101909152806003815260408051808201825260028152611a5960f21b60208083019190915283015280516361cd959d60e11b8152600788900b600482015291019061100f9063c39b2b3a90602401600060405180830381865afa15801561105e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261108691908101906121e3565b8152508160018151811061109c5761109c612217565b60209081029190910101526000546040516339c964e160e01b81526001600160a01b03909116906339c964e1906110d99084908690600401612383565b6020604051808303816000875af11580156110f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111c919061217b565b95945050505050565b600080546040516361cd959d60e11b8152600784900b6004820152606092839283928392839290916001600160a01b0390911690635b325d789061100f9063c39b2b3a90602401600060405180830381865afa158015611189573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111b191908101906121e3565b6040518263ffffffff1660e01b81526004016111cd91906125b5565b600060405180830381865afa1580156111ea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611212919081019061266f565b90506060806060806060856020015151600514156112d057856020015160008151811061124157611241612217565b60200260200101519450856020015160018151811061126257611262612217565b60200260200101519350856020015160028151811061128357611283612217565b6020026020010151925085602001516003815181106112a4576112a4612217565b6020026020010151915085602001516004815181106112c5576112c5612217565b602002602001015190505b939b929a50909850965090945092505050565b600080546040516361cd959d60e11b8152600784900b600482015282916001600160a01b031690635b325d789061100f9063c39b2b3a90602401600060405180830381865afa15801561133a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261136291908101906121e3565b6040518263ffffffff1660e01b815260040161137e91906125b5565b600060405180830381865afa15801561139b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113c3919081019061266f565b60408051600180825281830190925291925060009190816020015b60408051808201909152606080825260208201528152602001906001900390816113de57905050905060405180604001604052806040518060400160405280600a8152602001691a5cd7d9195b195d195960b21b8152508152602001604051806040016040528060018152602001603160f81b8152508152508160008151811061146a5761146a612217565b6020908102919091010152600080546040516361cd959d60e11b8152600787900b60048201526001600160a01b03909116906301fa804c9061100f9063c39b2b3a90602401600060405180830381865afa1580156114cc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114f491908101906121e3565b846040518363ffffffff1660e01b815260040161151292919061235e565b6020604051808303816000875af1158015611531573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611555919061217b565b604051600382900b81529091507fe7769b56c2afa8e40381956f76b91d9ec19c34c0a81791702fdcae68e35a72719060200160405180910390a1949350505050565b604080516001808252818301909252600091829190816020015b60408051808201909152606080825260208201528152602001906001900390816115b157905050905060405180604001604052806040518060400160405280600681526020016573746174757360d01b8152508152602001604051806040016040528060078152602001661d5c19185d195960ca1b8152508152508160008151811061163f5761163f612217565b60209081029190910181019190915260408051808201825260008082526101f4828501528251600280825260608201909452919390929082015b61169e6040805160608101909152806000815260200160608152602001606081525090565b8152602001906001900390816116795790505060408051606081018252600081528151808301835260028152611a5960f21b60208083019190915282015281516361cd959d60e11b815260078a900b6004820152929350919082019061100f9063c39b2b3a90602401600060405180830381865afa158015611724573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261174c91908101906121e3565b8152508160008151811061176257611762612217565b60209081029190910101526040805160608101909152806003815260408051808201825260028152611a5960f21b60208083019190915283015280516361cd959d60e11b8152600789900b600482015291019061100f9063c39b2b3a90602401600060405180830381865afa1580156117df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261180791908101906121e3565b8152508160018151811061181d5761181d612217565b6020908102919091010152600054604051630341b28360e01b81526001600160a01b0390911690630341b2839061185c908490869088906004016126a3565b6020604051808303816000875af115801561187b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189f919061217b565b9695505050505050565b60408051808201918290526361cd959d60e11b909152600787900b604482015260009081908061100f63c39b2b3a60648301600060405180830381865afa1580156118f8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261192091908101906121e3565b815260408051600580825260c0820190925260209092019190816020015b606081526020019060019003908161193e57905050815250905086816020015160008151811061197057611970612217565b602002602001018190525085816020015160018151811061199357611993612217565b60200260200101819052508481602001516002815181106119b6576119b6612217565b60200260200101819052508381602001516003815181106119d9576119d9612217565b60200260200101819052508281602001516004815181106119fc576119fc612217565b6020908102919091010152600080546040516304c8b95360e41b81526001600160a01b0390911690634c8b953090611a389085906004016126e8565b6020604051808303816000875af1158015611a57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7b919061217b565b604051600382900b81529091507fdfc533ec2b52797a1229dc2495dbd3f4948f7c4c982ec077ad9d80810ec5c1f99060200160405180910390a198975050505050505050565b63b95aa35560e01b600052604160045260246000fd5b604051606081","016001600160401b0381118282101715611af957611af9611ac1565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611b2757611b27611ac1565b604052919050565b60006001600160401b03821115611b4857611b48611ac1565b50601f01601f191660200190565b600082601f830112611b6757600080fd5b8135611b7a611b7582611b2f565b611aff565b818152846020838601011115611b8f57600080fd5b816020850160208301376000918101602001919091529392505050565b60006001600160401b03821115611bc557611bc5611ac1565b5060051b60200190565b60008060008060808587031215611be557600080fd5b84356001600160401b0380821115611bfc57600080fd5b611c0888838901611b56565b9550602091508187013560ff81168114611c2157600080fd5b9450604087013581811115611c3557600080fd5b611c4189828a01611b56565b945050606087013581811115611c5657600080fd5b8701601f81018913611c6757600080fd5b8035611c75611b7582611bac565b81815260059190911b8201840190848101908b831115611c9457600080fd5b8584015b83811015611ccc57803586811115611cb05760008081fd5b611cbe8e8983890101611b56565b845250918601918601611c98565b50989b979a50959850505050505050565b8035600781900b8114611cef57600080fd5b919050565b60008060408385031215611d0757600080fd5b611d1083611cdd565b9150611d1e60208401611cdd565b90509250929050565b60008060008060808587031215611d3d57600080fd5b611d4685611cdd565b935060208501356001600160401b0380821115611d6257600080fd5b611d6e88838901611b56565b94506040870135915080821115611d8457600080fd5b611d9088838901611b56565b93506060870135915080821115611da657600080fd5b50611db387828801611b56565b91505092959194509250565b60005b83811015611dda578181015183820152602001611dc2565b83811115611de9576000848401525b50505050565b60008151808452611e07816020860160208601611dbf565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015611e6657601f19868403018952611e54838351611def565b98840198925090830190600101611e38565b5090979650505050505050565b602081526000611e866020830184611e1b565b9392505050565b60008060408385031215611ea057600080fd5b82356001600160401b0380821115611eb757600080fd5b611ec386838701611b56565b93506020850135915080821115611ed957600080fd5b50611ee685828601611b56565b9150509250929050565b604081526000611f036040830185611def565b828103602084015261111c8185611def565b604081526000611f286040830185611def565b828103602084015261111c8185611e1b565b600060208284031215611f4c57600080fd5b611e8682611cdd565b60a081526000611f6860a0830188611def565b8281036020840152611f7a8188611def565b90508281036040840152611f8e8187611def565b90508281036060840152611fa28186611def565b90508281036080840152611fb68185611def565b98975050505050505050565b60008060008060008060c08789031215611fdb57600080fd5b611fe487611cdd565b955060208701356001600160401b038082111561200057600080fd5b61200c8a838b01611b56565b9650604089013591508082111561202257600080fd5b61202e8a838b01611b56565b9550606089013591508082111561204457600080fd5b6120508a838b01611b56565b9450608089013591508082111561206657600080fd5b6120728a838b01611b56565b935060a089013591508082111561208857600080fd5b5061209589828a01611b56565b9150509295509295509295565b63b95aa35560e01b600052602160045260246000fd5b600081518084526020808501808196508360051b8101915082860160005b858110156121005782840389526120ee848351611def565b988501989350908401906001016120d6565b5091979650505050505050565b6040815260006121206040830185611def565b828103602084015283516002811061213a5761213a6120a2565b808252506020840151606060208301526121576060830182611def565b90506040850151828203604084015261217082826120b8565b979650505050505050565b60006020828403121561218d57600080fd5b81518060030b8114611e8657600080fd5b600082601f8301126121af57600080fd5b81516121bd611b7582611b2f565b8181528460208386010111156121d257600080fd5b61053a826020830160208701611dbf565b6000602082840312156121f557600080fd5b81516001600160401b0381111561220b57600080fd5b61053a8482850161219e565b63b95aa35560e01b600052603260045260246000fd5b600081518084526020808501808196508360051b8101915082860160005b858110156121005782840389528151606081516009811061226e5761226e6120a2565b86528187015187870182905261228682880182611def565b915050604080830151925086820381880152506122a38183611def565b9a87019a955050509084019060010161224b565b602081526000611e86602083018461222d565b6000602082840312156122dc57600080fd5b815163ffffffff81168114611e8657600080fd5b600081518084526020808501808196508360051b8101915082860160005b8581101561210057828403895281516040815181875261233082880182611def565b9150508682015191508581038787015261234a8183611def565b9a87019a955050509084019060010161230e565b6040815260006123716040830185611def565b828103602084015261111c81856122f0565b606081526000612396606083018561222d565b9050611e866020830184805163ffffffff908116835260209182015116910152565b600082601f8301126123c957600080fd5b815160206123d9611b7583611bac565b82815260059290921b840181019181810190868411156123f857600080fd5b8286015b84811015610ab45780516001600160401b0381111561241b5760008081fd5b6124298986838b010161219e565b8452509183019183016123fc565b60006040828403121561244957600080fd5b604051604081016001600160401b03828210818311171561246c5761246c611ac1565b81604052829350845191508082111561248457600080fd5b6124908683870161219e565b835260208501519150808211156124a657600080fd5b506124b3858286016123b8565b6020830152505092915050565b600060208083850312156124d357600080fd5b82516001600160401b03808211156124ea57600080fd5b818501915085601f8301126124fe57600080fd5b815161250c611b7582611bac565b81815260059190911b8301840190848101908883111561252b57600080fd5b8585015b83811015612563578051858111156125475760008081fd5b6125558b89838a0101612437565b84525091860191860161252f565b5098975050505050505050565b60006000198214156125925763b95aa35560e01b600052601160045260246000fd5b5060010190565b600082516125ab818460208701611dbf565b9190910192915050565b602081526000611e866020830184611def565b6000602082840312156125da57600080fd5b81516001600160401b03808211156125f157600080fd5b908301906060828603121561260557600080fd5b61260d611ad7565b82516002811061261c57600080fd5b815260208301518281111561263057600080fd5b61263c8782860161219e565b60208301525060408301518281111561265457600080fd5b612660878286016123b8565b60408301525095945050505050565b60006020828403121561268157600080fd5b81516001600160401b0381111561269757600080fd5b61053a84828501612437565b6080815260006126b6608083018661222d565b6126d66020840186805163ffffffff908116835260209182015116910152565b828103606084015261189f81856122f0565b6020815260008251604060208401526127046060840182611def565b90506020840151601f1984830301604085015261111c82826120b856fea26469706673582212207b8630674dabcbec9aaa31ff1d7b6121f22ea6844c3cd123e2674c70b0f9edb764736f6c634300080b0033"};

    public static final String SM_BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", SM_BINARY_ARRAY);

    public static final String[] ABI_ARRAY = {"[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"CreateResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"InsertResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"RemoveResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"UpdateResult\",\"type\":\"event\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"account\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"password\",\"type\":\"string\"}],\"name\":\"check\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"selector\":[1918745664,1788157617],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"idLow\",\"type\":\"int64\"},{\"internalType\":\"int64\",\"name\":\"idHigh\",\"type\":\"int64\"}],\"name\":\"count\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"selector\":[4118138272,646094972],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"tableName\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"keyOrder\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"fields\",\"type\":\"string[]\"}],\"name\":\"createTable\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"selector\":[2361884286,91595293],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[],\"name\":\"desc\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"selector\":[1441878257,1966441124],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"id\",\"type\":\"int64\"},{\"internalType\":\"string\",\"name\":\"account\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"password\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"userType\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"isDeleted\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"privateKey\",\"type\":\"string\"}],\"name\":\"insert\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"selector\":[2533571095,3667264101],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"idLow\",\"type\":\"int64\"},{\"internalType\":\"int64\",\"name\":\"idHigh\",\"type\":\"int64\"}],\"name\":\"remove\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"selector\":[2998856592,2181577930],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"id\",\"type\":\"int64\"}],\"name\":\"remove\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"selector\":[3944264839,2426386621],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"idLow\",\"type\":\"int64\"},{\"internalType\":\"int64\",\"name\":\"idHigh\",\"type\":\"int64\"}],\"name\":\"select\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"selector\":[1116732347,887486729],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"id\",\"type\":\"int64\"}],\"name\":\"select\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"selector\":[3082979382,2331271212],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"id\",\"type\":\"int64\"},{\"internalType\":\"string\",\"name\":\"account\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"password\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"userType\",\"type\":\"string\"}],\"name\":\"update\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"selector\":[2500164072,845762281],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"idLow\",\"type\":\"int64\"},{\"internalType\":\"int64\",\"name\":\"idHigh\",\"type\":\"int64\"}],\"name\":\"update\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"selector\":[3680251819,3586562291],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"};

    public static final String ABI = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", ABI_ARRAY);

    public static final String FUNC_CHECK = "check";

    public static final String FUNC_COUNT = "count";

    public static final String FUNC_CREATETABLE = "createTable";

    public static final String FUNC_DESC = "desc";

    public static final String FUNC_INSERT = "insert";

    public static final String FUNC_REMOVE = "remove";

    public static final String FUNC_SELECT = "select";

    public static final String FUNC_UPDATE = "update";

    public static final Event CREATERESULT_EVENT = new Event("CreateResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    public static final Event INSERTRESULT_EVENT = new Event("InsertResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    public static final Event REMOVERESULT_EVENT = new Event("RemoveResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    public static final Event UPDATERESULT_EVENT = new Event("UpdateResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    protected LoginContract(String contractAddress, Client client, CryptoKeyPair credential) {
        super(getBinary(client.getCryptoSuite()), contractAddress, client, credential);
        this.transactionManager = new ProxySignTransactionManager(client);
    }

    public static String getBinary(CryptoSuite cryptoSuite) {
        return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY);
    }

    public static String getABI() {
        return ABI;
    }

    public List<CreateResultEventResponse> getCreateResultEvents(
            TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(CREATERESULT_EVENT, transactionReceipt);
        ArrayList<CreateResultEventResponse> responses = new ArrayList<CreateResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            CreateResultEventResponse typedResponse = new CreateResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeCreateResultEvent(BigInteger fromBlock, BigInteger toBlock,
            List<String> otherTopics, EventSubCallback callback) {
        String topic0 = eventEncoder.encode(CREATERESULT_EVENT);
        subscribeEvent(topic0,otherTopics,fromBlock,toBlock,callback);
    }

    public void subscribeCreateResultEvent(EventSubCallback callback) {
        String topic0 = eventEncoder.encode(CREATERESULT_EVENT);
        subscribeEvent(topic0,callback);
    }

    public List<InsertResultEventResponse> getInsertResultEvents(
            TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(INSERTRESULT_EVENT, transactionReceipt);
        ArrayList<InsertResultEventResponse> responses = new ArrayList<InsertResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            InsertResultEventResponse typedResponse = new InsertResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeInsertResultEvent(BigInteger fromBlock, BigInteger toBlock,
            List<String> otherTopics, EventSubCallback callback) {
        String topic0 = eventEncoder.encode(INSERTRESULT_EVENT);
        subscribeEvent(topic0,otherTopics,fromBlock,toBlock,callback);
    }

    public void subscribeInsertResultEvent(EventSubCallback callback) {
        String topic0 = eventEncoder.encode(INSERTRESULT_EVENT);
        subscribeEvent(topic0,callback);
    }

    public List<RemoveResultEventResponse> getRemoveResultEvents(
            TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(REMOVERESULT_EVENT, transactionReceipt);
        ArrayList<RemoveResultEventResponse> responses = new ArrayList<RemoveResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            RemoveResultEventResponse typedResponse = new RemoveResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeRemoveResultEvent(BigInteger fromBlock, BigInteger toBlock,
            List<String> otherTopics, EventSubCallback callback) {
        String topic0 = eventEncoder.encode(REMOVERESULT_EVENT);
        subscribeEvent(topic0,otherTopics,fromBlock,toBlock,callback);
    }

    public void subscribeRemoveResultEvent(EventSubCallback callback) {
        String topic0 = eventEncoder.encode(REMOVERESULT_EVENT);
        subscribeEvent(topic0,callback);
    }

    public List<UpdateResultEventResponse> getUpdateResultEvents(
            TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(UPDATERESULT_EVENT, transactionReceipt);
        ArrayList<UpdateResultEventResponse> responses = new ArrayList<UpdateResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            UpdateResultEventResponse typedResponse = new UpdateResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeUpdateResultEvent(BigInteger fromBlock, BigInteger toBlock,
            List<String> otherTopics, EventSubCallback callback) {
        String topic0 = eventEncoder.encode(UPDATERESULT_EVENT);
        subscribeEvent(topic0,otherTopics,fromBlock,toBlock,callback);
    }

    public void subscribeUpdateResultEvent(EventSubCallback callback) {
        String topic0 = eventEncoder.encode(UPDATERESULT_EVENT);
        subscribeEvent(topic0,callback);
    }

    public Tuple2<String, String> check(String account, String password) throws ContractException {
        final Function function = new Function(FUNC_CHECK, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(account), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(password)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        List<Type> results = executeCallWithMultipleValueReturn(function);
        return new Tuple2<String, String>(
                (String) results.get(0).getValue(), 
                (String) results.get(1).getValue());
    }

    public Function getMethodCheckRawFunction(String account, String password) throws
            ContractException {
        final Function function = new Function(FUNC_CHECK, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(account), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(password)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        return function;
    }

    public BigInteger count(BigInteger idLow, BigInteger idHigh) throws ContractException {
        final Function function = new Function(FUNC_COUNT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint32>() {}));
        return executeCallWithSingleValueReturn(function, BigInteger.class);
    }

    public Function getMethodCountRawFunction(BigInteger idLow, BigInteger idHigh) throws
            ContractException {
        final Function function = new Function(FUNC_COUNT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint32>() {}));
        return function;
    }

    public TransactionReceipt createTable(String tableName, BigInteger keyOrder, String key,
            List<String> fields) {
        final Function function = new Function(
                FUNC_CREATETABLE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(tableName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint8(keyOrder), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(key), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray<org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String>(
                        org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class,
                        org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return executeTransaction(function);
    }

    public Function getMethodCreateTableRawFunction(String tableName, BigInteger keyOrder,
            String key, List<String> fields) throws ContractException {
        final Function function = new Function(FUNC_CREATETABLE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(tableName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint8(keyOrder), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(key), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray<org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String>(
                        org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class,
                        org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
        return function;
    }

    public String getSignedTransactionForCreateTable(String tableName, BigInteger keyOrder,
            String key, List<String> fields) {
        final Function function = new Function(
                FUNC_CREATETABLE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(tableName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint8(keyOrder), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(key), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray<org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String>(
                        org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class,
                        org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return createSignedTransaction(function);
    }

    public String createTable(String tableName, BigInteger keyOrder, String key,
            List<String> fields, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_CREATETABLE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(tableName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint8(keyOrder), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(key), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray<org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String>(
                        org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class,
                        org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return asyncExecuteTransaction(function, callback);
    }

    public Tuple4<String, BigInteger, String, List<String>> getCreateTableInput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_CREATETABLE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Uint8>() {}, new TypeReference<Utf8String>() {}, new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple4<String, BigInteger, String, List<String>>(

                (String) results.get(0).getValue(), 
                (BigInteger) results.get(1).getValue(), 
                (String) results.get(2).getValue(), 
                convertToNative((List<Utf8String>) results.get(3).getValue())
                );
    }

    public Tuple1<BigInteger> getCreateTableOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_CREATETABLE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public Tuple2<String, List<String>> desc() throws ContractException {
        final Function function = new Function(FUNC_DESC, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> results = executeCallWithMultipleValueReturn(function);
        return new Tuple2<String, List<String>>(
                (String) results.get(0).getValue(), 
                convertToNative((List<Utf8String>) results.get(1).getValue()));
    }

    public Function getMethodDescRawFunction() throws ContractException {
        final Function function = new Function(FUNC_DESC, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<DynamicArray<Utf8String>>() {}));
        return function;
    }

    public TransactionReceipt insert(BigInteger id, String account, String password,
            String userType, String isDeleted, String privateKey) {
        final Function function = new Function(
                FUNC_INSERT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(account), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(password), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(userType), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(isDeleted), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(privateKey)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return executeTransaction(function);
    }

    public Function getMethodInsertRawFunction(BigInteger id, String account, String password,
            String userType, String isDeleted, String privateKey) throws ContractException {
        final Function function = new Function(FUNC_INSERT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(account), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(password), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(userType), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(isDeleted), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(privateKey)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        return function;
    }

    public String getSignedTransactionForInsert(BigInteger id, String account, String password,
            String userType, String isDeleted, String privateKey) {
        final Function function = new Function(
                FUNC_INSERT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(account), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(password), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(userType), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(isDeleted), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(privateKey)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return createSignedTransaction(function);
    }

    public String insert(BigInteger id, String account, String password, String userType,
            String isDeleted, String privateKey, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_INSERT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(account), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(password), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(userType), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(isDeleted), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(privateKey)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return asyncExecuteTransaction(function, callback);
    }

    public Tuple6<BigInteger, String, String, String, String, String> getInsertInput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_INSERT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int64>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple6<BigInteger, String, String, String, String, String>(

                (BigInteger) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                (String) results.get(2).getValue(), 
                (String) results.get(3).getValue(), 
                (String) results.get(4).getValue(), 
                (String) results.get(5).getValue()
                );
    }

    public Tuple1<BigInteger> getInsertOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_INSERT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public TransactionReceipt remove(BigInteger idLow, BigInteger idHigh) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return executeTransaction(function);
    }

    public Function getMethodRemoveRawFunction(BigInteger idLow, BigInteger idHigh) throws
            ContractException {
        final Function function = new Function(FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        return function;
    }

    public String getSignedTransactionForRemove(BigInteger idLow, BigInteger idHigh) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return createSignedTransaction(function);
    }

    public String remove(BigInteger idLow, BigInteger idHigh, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return asyncExecuteTransaction(function, callback);
    }

    public Tuple2<BigInteger, BigInteger> getRemoveInt64Int64Input(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_REMOVE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int64>() {}, new TypeReference<Int64>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple2<BigInteger, BigInteger>(

                (BigInteger) results.get(0).getValue(), 
                (BigInteger) results.get(1).getValue()
                );
    }

    public Tuple1<BigInteger> getRemoveInt64Int64Output(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_REMOVE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public TransactionReceipt remove(BigInteger id) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return executeTransaction(function);
    }

    public Function getMethodRemoveRawFunction(BigInteger id) throws ContractException {
        final Function function = new Function(FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        return function;
    }

    public String getSignedTransactionForRemove(BigInteger id) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return createSignedTransaction(function);
    }

    public String remove(BigInteger id, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return asyncExecuteTransaction(function, callback);
    }

    public Tuple1<BigInteger> getRemoveInt64Input(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_REMOVE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int64>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public Tuple1<BigInteger> getRemoveInt64Output(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_REMOVE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public List select(BigInteger idLow, BigInteger idHigh) throws ContractException {
        final Function function = new Function(FUNC_SELECT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> result = (List<Type>) executeCallWithSingleValueReturn(function, List.class);
        return convertToNative(result);
    }

    public Function getMethodSelectRawFunction(BigInteger idLow, BigInteger idHigh) throws
            ContractException {
        final Function function = new Function(FUNC_SELECT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Utf8String>>() {}));
        return function;
    }

    public Tuple5<String, String, String, String, String> select(BigInteger id) throws
            ContractException {
        final Function function = new Function(FUNC_SELECT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        List<Type> results = executeCallWithMultipleValueReturn(function);
        return new Tuple5<String, String, String, String, String>(
                (String) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                (String) results.get(2).getValue(), 
                (String) results.get(3).getValue(), 
                (String) results.get(4).getValue());
    }

    public Function getMethodSelectRawFunction(BigInteger id) throws ContractException {
        final Function function = new Function(FUNC_SELECT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        return function;
    }

    public TransactionReceipt update(BigInteger id, String account, String password,
            String userType) {
        final Function function = new Function(
                FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(account), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(password), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(userType)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return executeTransaction(function);
    }

    public Function getMethodUpdateRawFunction(BigInteger id, String account, String password,
            String userType) throws ContractException {
        final Function function = new Function(FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(account), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(password), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(userType)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        return function;
    }

    public String getSignedTransactionForUpdate(BigInteger id, String account, String password,
            String userType) {
        final Function function = new Function(
                FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(account), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(password), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(userType)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return createSignedTransaction(function);
    }

    public String update(BigInteger id, String account, String password, String userType,
            TransactionCallback callback) {
        final Function function = new Function(
                FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(account), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(password), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(userType)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return asyncExecuteTransaction(function, callback);
    }

    public Tuple4<BigInteger, String, String, String> getUpdateInt64StringStringStringInput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_UPDATE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int64>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple4<BigInteger, String, String, String>(

                (BigInteger) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                (String) results.get(2).getValue(), 
                (String) results.get(3).getValue()
                );
    }

    public Tuple1<BigInteger> getUpdateInt64StringStringStringOutput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_UPDATE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public TransactionReceipt update(BigInteger idLow, BigInteger idHigh) {
        final Function function = new Function(
                FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return executeTransaction(function);
    }

    public Function getMethodUpdateRawFunction(BigInteger idLow, BigInteger idHigh) throws
            ContractException {
        final Function function = new Function(FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        return function;
    }

    public String getSignedTransactionForUpdate(BigInteger idLow, BigInteger idHigh) {
        final Function function = new Function(
                FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return createSignedTransaction(function);
    }

    public String update(BigInteger idLow, BigInteger idHigh, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return asyncExecuteTransaction(function, callback);
    }

    public Tuple2<BigInteger, BigInteger> getUpdateInt64Int64Input(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_UPDATE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int64>() {}, new TypeReference<Int64>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple2<BigInteger, BigInteger>(

                (BigInteger) results.get(0).getValue(), 
                (BigInteger) results.get(1).getValue()
                );
    }

    public Tuple1<BigInteger> getUpdateInt64Int64Output(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_UPDATE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public static LoginContract load(String contractAddress, Client client,
                                     CryptoKeyPair credential) {
        return new LoginContract(contractAddress, client, credential);
    }

    public static LoginContract deploy(Client client, CryptoKeyPair credential) throws
            ContractException {
        return deploy(LoginContract.class, client, credential, getBinary(client.getCryptoSuite()), getABI(), null, null);
    }

    public static class CreateResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class InsertResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class RemoveResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class UpdateResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }
}
